home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / misc / emu / msh-156.lha / c / makeconv.rexx < prev    next >
OS/2 REXX Batch file  |  1992-10-05  |  1KB  |  81 lines

  1. /*
  2.  * MakeConv.rexx
  3.  *
  4.  * Make a conversion table file for MSH:
  5.  *
  6.  * This code is (C) Copyright 1992 by Olaf Seibert. All rights reserved.
  7.  * May not be used or copied without a licence.
  8.  */
  9.  
  10. parse arg file rest
  11.  
  12. if (file = "") | (file = "?") then do
  13.     say "Usage: [rx] makeconv filename {amiga-char other-char}"
  14.     exit 10
  15. end
  16.  
  17. call init()
  18.  
  19. do while rest ~= ""
  20.     parse value rest with amiga other rest
  21.     call convert(amiga, other)
  22. end
  23.  
  24. call finish()
  25. exit 0
  26.  
  27. init:
  28.     drop to.
  29.     drop from.
  30.  
  31.     do i = 0 to 255
  32.     to.i = i
  33.     from.i = i
  34.     end
  35.     return
  36.  
  37. convert:
  38.     amiga = normalise(arg(1))
  39.     other = normalise(arg(2))
  40.  
  41.     to.amiga = other
  42.     from.other = amiga
  43.  
  44.     say "Amiga char" amiga "("d2c(amiga)") =" other"."
  45.  
  46.     return
  47.  
  48. normalise:
  49.     value = arg(1)
  50.  
  51.     if left(value, 1) = "$" then do
  52.     value = x2d(substr(value, 2))
  53.     end
  54.     else if left(value, 2) = "0x" then do
  55.     value = x2d(substr(value, 3))
  56.     end
  57.     else if left(value, 1) = "'" | left(value, 1) = '"' then do
  58.     value = c2d(substr(value, 2, 1))
  59.     end
  60.  
  61.     return value
  62.  
  63. finish:
  64.     if (open(fp, file, "w") = 0) then do
  65.     say "Cannot open" file "for write."
  66.     exit 10
  67.     end
  68.  
  69.     to = ""
  70.     from = ""
  71.     do i = 0 to 255
  72.     to = to || d2c(to.i)
  73.     from = from || d2c(from.i)
  74.     end
  75.     writech(fp, to)
  76.     writech(fp, from)
  77.  
  78.     call close(fp)
  79.  
  80.     return
  81.